<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

  <script>
    /* 
      运算符：
        1、算术运算符
          + - * / %
        2、一元运算符
        2、赋值运算符
          = += -= *= /= %=

          a += 5  表示 a = a + 5
          a -= 5  表示 a = a - 5
          a *= 5  表示 a = a * 5
          a /= 5  表示 a = a / 5
          a %= 5  表示 a = a % 5

        3、关系运算符
          < > <= >= == === != !==

          == 判断的是两个值是否相等 举例 “10” == 10 返回true 
          === 判断的是值和类型是否都相等 举例 "10" === 10 返回false

          != 判断的是两个值是否不相等
          !== 判断的是类型和值是否都不想等

        4、逻辑运算符 
          &&(与,and符) ||（或） !（非）
          
          &&，全真为真，一假即假，另一个名字叫短路与
          ||，一真为真，全假即假，也叫短路或
          !，取反
    */
    /* 
      +有特殊的含义：
        1、对数字进行+，表示两个数字相加
        2、对于字符串进行+，表示拼接，字符串与任何内容拼接结果都是字符串
   
      -没有特殊含义：
        直接表示相减，只要是数字就相减

      *有特殊需要注意的地方
        正常用于相乘使用

      / 第二个数字不能为0

      % 第二个数字不能为0
   */
    var a = "10";
    var b;
    console.log(a + b);
    

    var c = "10";
    var d = 1;
    console.log(c - d);
    console.log(a - c);

    var e = ""; // 隐式转换，会把空字符串转为0
    var f = 1;
    console.log(e - f);

    var g = 0.2;
    var h = 0.2;
    console.log(g * h); // 先扩大倍数，再给结果缩小倍数
    console.log((g*100) * (h*100) / 10000);


    console.log(3 % 10);



    /* 
       邪恶六兄弟:
        0  false  undefined  NaN ""  null

      这6个值 在逻辑运算中会被当做 false处理
      其他所有值 都会被当做true 处理
    
    */
    console.log(Number(0));
    console.log(Number(null));
    console.log(Number(undefined));
    console.log(Number(NaN));
    console.log(Number(""));
    console.log(Number(0));


    /* 
      0 === 0 
      NaN === NaN // false NaN跟任何类型的值都不想等，包括它自己
      
    */
   console.log(null == undefined); // true，系统就这么规定的
  </script>
</body>
</html>